(define (fast-multi a b)
  (define (double x) (+ x x))
  (define (halve x) (/ x 2))
  (cond ((or (= a 0) (= b 0)) 0) 
        ((even? b) (fast-multi (double a) (halve b)))
        (else (+ (fast-multi (double a) (halve (- b 1))) a))))
